<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      //第一个：
      //   setTimeout(() => {
      //     console.log(1);
      //   });
      //   new Promise((resolve, reject) => {
      //     console.log(2);
      //     resolve();
      //   }).then(() => {
      //     console.log(3);
      //   });
      //   console.log(4);
      // 【script里的同步任务：2--4[3]】--->【settimeout--1[]】；
      // 2--4--3---1;

      // 第二个 ：

      setTimeout(() => {
        // timeout1
        console.log("set1");
        new Promise((resolve, reject) => {
          console.log("pr1");
          resolve();
        }).then(() => {
          console.log("then1");
        });
      });
      setTimeout(() => {
        // timeout2
        console.log("set2");
      });
      new Promise((resolve, reject) => {
        console.log("pr2");
        resolve();
      }).then(() => {
        console.log("then2"); //4
      });
      new Promise((resolve, reject) => {
        console.log("pr3");
        setTimeout(() => {
          // timeout3
          console.log("set3");
        });
        resolve();
      }).then(() => {
        console.log("then3");
      });
      console.log(1);
      // 【】 代表异步宏任务  ；  [] 代表异步微任务；
      // 【script里的同步：pr2--pr3--1[then2--then3]】【timeout1:set1--pr1[then1]】【timeout2:set2[]】 【timeout3:set3】
      // pr2--pr3--1 --then2--then3--set1--pr1--then1--set2--set3

      //第三个 ：
      //   setTimeout(() => {
      //     console.log("set1");
      //   }, 2000);
      //   setTimeout(() => {
      //     console.log("set2");
      //   }, 1000);
      //   new Promise((resolve, reject) => {
      //     console.log("pr1");
      //     setTimeout(() => {
      //       console.log("set3");
      //       resolve();
      //     }, 1000);
      //   }).then(() => {
      //     setTimeout(() => {
      //       console.log("set4 then1");
      //     }, 200);
      //   });
      // 看定时器的延迟时间；
      // 【script同步代码：pr1】
      // pr1---set2 ---set3  ---set4 then1 --- set1

      // 第四个 ：

      //   console.log("1");
      //   setTimeout(function () {
      //     // timeout1
      //     console.log("2");
      //     new Promise(function (resolve) {
      //       console.log("3");
      //       resolve();
      //     }).then(function () {
      //       console.log("4");
      //     });
      //   });
      //   new Promise(function (resolve) {
      //     console.log("5");
      //     resolve();
      //   }).then(function () {
      //     console.log("6");
      //   });
      //   setTimeout(function () {
      //     // timeout2
      //     console.log("7");
      //     new Promise(function (resolve) {
      //       console.log("8");
      //       resolve();
      //     }).then(function () {
      //       console.log("9");
      //     });
      //   });
      //【script：1--5[6]】 ---【timeout1:2--3[4]】--【timeout2:7--8[9]】;
      //1--5--6--2--3--4--7--8--9
    </script>
  </body>
</html>
